package kr.hkit.powerjava.chapter25.chat;

public class QuizProtocol {
	private static final int WAITING = 0 ;
	private static final int PROBLEM = 1;
	private static final int ANSWER = 2;
	
	private static final int NUMPROBLEMS = 3; //문제수는 3개
	
	private int state = QuizProtocol.WAITING; //현재상태
	private int currentProblem = 0; //이거 계속 1씩증가되면서 0,1,2번 문제 제출
	
	private String[] problems = {"네트워크 처리 패키지는?" ,
			"자바의 최신 버전은?", "인터넷에서 컴퓨터를 식별하는 주소는?"};
	private String[] answers = {"java.io", "1.7", "IP 주소"};
	
	public String process(String theInput) {
		String theOutput = null;
		
		switch (state) {
			case QuizProtocol.WAITING: //현재상태 웨이팅.
				theOutput = "퀴즈를 시작합니다. (y/n)";
				state = QuizProtocol.PROBLEM; //문제보내주는 상태로 바뀜
				break;
			case QuizProtocol.PROBLEM: //y인지 n인지 판단
				if (theInput.equalsIgnoreCase("y")){ //대소문자 무시하고 y면 문제출제
					theOutput = problems[currentProblem]; //지금 0이니까 0번문제가 output으로 들어감
					state = QuizProtocol.ANSWER;
				}else{
					state = QuizProtocol.WAITING;
					theOutput = "quit";
				}
				break;
			case QuizProtocol.ANSWER: //클라이언트 답이랑 원래 답이랑 비교
				if (theInput.equalsIgnoreCase(answers[currentProblem])){ //같으냐?
					theOutput = "정답입니다. 계속하시겠습니까? (y/n)";
					state = QuizProtocol.PROBLEM;
				}else{
					theOutput = "오답입니다. 계속하시겠습니까? (y/n)";
					state = QuizProtocol.PROBLEM; //case problem으로 가서 y,n결정
				}
				currentProblem = (currentProblem+1) % NUMPROBLEMS; //1,2되고 다시 0,1,2되고 
				break;
		}
		return theOutput;
	}
	
}
